<?php
namespace Monkey\Database\SqlHelper;

use Monkey\Database\QueryHelper as QueryHelper;

/**
 * 插入操作助手\Monkey\Database\SqlHelper\Insert
 * @package    Monkey\Database\SqlHelper
 * @author     HuangYi
 * @copyright  Copyright (c) 2011-07-01——2013-03-30
 * @license    New BSD License
 * @version    $Id: \Monkey\Database\SqlHelper\Insert.php 版本号 2013-03-30 $
 */
class Insert
{
    /**
     * @var \Monkey\Database\QueryHelper\_Interface
     */
    private $_queryHelper;
    private $_options;
    public function __construct(){}
    /**
     * @param \Monkey\Database\QueryHelper\_Interface &$queryHelper
     * @return \Monkey\Database\SqlHelper\Insert
     */
    public function _reset( QueryHelper\_Interface &$queryHelper){
        $this->_queryHelper=$queryHelper;
        $this->_options=array();
        return $this;
    }
    /**
     * 设置要插入的表名
     * @param string $table 表名。不能带前缀，程序自动加入前缀；也不支持别名。
     * @return \Monkey\Database\SqlHelper\Insert
     */
    public function table($table){
        $this->_options['table']=trim($table);
        return $this;
    }
    /**
     * 添加插入语句的字段值列表
     * 一次插入一整行数据的字段值列表，请不要自增字段插入值，程序没有此效验功能
     * @param array $value 字段值列表array(field1=>value1,field2=>value2,...)（自动去除sql非法字符，开发人员无需关心）
     * @return \Monkey\Database\SqlHelper\Insert
     */
    public function values(array $value){
        $this->_options['values'][]=$value;
        return $this;
    }
    /**
     * 生成sql语句
     * @param bool $isReplace 是否为替换方式，默认否
     * @return string
     */
    public function getSql($isReplace=false){
        $this->_options['isReplace']=$isReplace;
        return $this->_queryHelper->buildInsert($this->_options);
    }
    /**
     * 执行生成的sql语句
     * @param bool $isReplace 是否为替换方式，默认否
     * @return \Monkey\Database\Driver\_Interface
     */
    public function exec($isReplace=false){
        $this->_options['isReplace']=$isReplace;
        $options=$this->_options;
        $this->_options=array();
        return $this->_queryHelper->insert($options);
    }
}